from appium import webdriver

import time

from selenium.webdriver.common.by import By
# from selenium_web.webdriver.support.wait import WebDriverWait

desired_caps = dict()

# 设置中文可输入
desired_caps['unicodeKeyboard'] = True
desired_caps['resetKeyboard'] = True
# 配置 appium_app
desired_caps['platformName'] = 'Android'
desired_caps['platformVersion'] = '5.1'
desired_caps['deviceName'] = '111'
desired_caps['appPackage'] = 'com.android.settings'
desired_caps['appActivity'] = '.Settings'
driver = webdriver.Remote('http://localhost:4723/wd/hub', desired_caps)

# 全局等待5s
driver.implicitly_wait(5)

# 1.1 点击元素
# 点击放大镜
# driver.find_element(By.ID, 'com.android.settings:id/search').click()

# 1.2 输入和清空输入框内容
# 输入 在搜索框输入 hello world
# driver.find_element(By.ID, 'android:id/search_src_text').send_keys('hello world')
# # 清除 hello world
# time.sleep(2)
# driver.find_element(By.ID, 'android:id/search_src_text').clear()
# 输入中午无无效，不会报错，需要设置
# searchButton = driver.find_element(By.ID, 'android:id/search_src_text')
# searchButton.send_keys('你好，世界')
# time.sleep(2)
# searchButton.clear()
# 返回到设置页面
# driver.find_element(By.CLASS_NAME, 'android.widget.ImageButton').click()

# 1.3 获取元素的文本内容
# 查找 com.android.settings:id/category_title 的所有元素，并打印
# title = driver.find_elements(By.ID, 'com.android.settings:id/category_title')
# for i in title:
#     print(i.text)

# 1.4 获取元素的位置和大小
# 获取设置中， 关于手机 的位置和大小
mobial = driver.find_elements(By.CLASS_NAME, 'android.widget.TextView')
print(mobial[-1].location)  # x, y
print(mobial[-1].size)  # 高和宽
# 1.5 获取元素的属性值
for i in mobial:
    print(i.get_attribute('enabled'))  # 是否可用，例如登录按钮，填完账号密码才会变成可点击
    print(i.get_attribute('clickable'))  # 是否可以被点击
    print(i.get_attribute('text'))  # 获取文本内容 返回text的属性值
    print(i.get_attribute('name'))  # 返回content-desc 或者 text属性值
    print(i.get_attribute('resourceId'))  # 获取id属性 只有 API=>18 才能支持
    print(i.get_attribute('className'))  # 获取class属性 只有 API=>18 才能支持
    print('----------------------------------')
    print('----------------------------------')

time.sleep(3)

driver.quit()
